/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.despachadores;

import java.sql.*;
import java.util.*;
import oracle.jdbc.*;
import pe.gob.pnp.actions.*;
import pe.gob.pnp.factories.*;

/**
 *
 * @author Eduardo Cavero Guzmán
 * @date 26/05/2010
 */
public class IndexadoDespachador {
    public static void guardarIndexado(Indexado indexado) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_GUARDAR_INDEXADO(?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, indexado.getNdodiIdentificador());
            cs.setInt(2, indexado.getNindiIdentificador());
            cs.setString(3, indexado.getCindeValor());
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static List<Indice> obtenerIndicesPorTipoDocumento(int ntidoIdentificador) throws SQLException{
                List<Indice> lstIndices=new ArrayList<Indice>();
        Connection conn=null;
        try{
            conn=ConnectionPool.obtenerConexion();
            String sql="{call SP_OBTENER_INDICES_TIPODOC_IND(?,?)}";
            CallableStatement cs=conn.prepareCall(sql);
            cs.setInt(1, ntidoIdentificador);
            cs.registerOutParameter(2, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs=(ResultSet)cs.getObject(2);
            while(rs.next()){
                Indice indice=new Indice();
                indice.setNtidoIdentificador(rs.getInt("NTIDO_IDENTIFICADOR"));
                indice.setNindiIdentificador(rs.getInt("NINDI_IDENTIFICADOR"));
                indice.setCindiNombre(rs.getString("CINDI_NOMBRE"));
                indice.setNindiLongitud(rs.getInt("NINDI_LONGITUD"));
                indice.setBtidoObligatorio(rs.getBoolean("BTIDO_OBLIGATORIO"));
                TipoDato tipoDato = new TipoDato();
                tipoDato.setNtidaIdentificador(rs.getInt("NTIDA_IDENTIFICADOR"));
                tipoDato.setCtidaDescripcion(rs.getString("CTIDA_DESCRIPCION"));
                tipoDato.setCtidaFuncionValidador(rs.getString("CTIDA_FUNCIONVALIDADOR"));
                indice.setTipoDato(tipoDato);
                Indexado indexado = new Indexado();
                indexado.setCindeValor(rs.getString("CINDE_VALOR"));
                indice.setIndexado(indexado);
                lstIndices.add(indice);
            }
        }finally{
            ConnectionPool.liberarConexion(conn);
        }
        return lstIndices;
    }

}
